@@ -98,13 +98,15 @@ module LongRunnable |
||
98 | 98 |
|
99 | 99 |
def terminate_thread! |
100 | 100 |
if thread |
101 |
- thread.terminate |
|
101 |
+ thread.instance_eval { ActiveRecord::Base.connection_pool.release_connection } |
|
102 | 102 |
thread.wakeup if thread.status == 'sleep' |
103 |
+ thread.terminate |
|
103 | 104 |
end |
104 | 105 |
end |
105 | 106 |
|
106 | 107 |
def restart! |
107 | 108 |
without_alive_check do |
109 |
+ puts "--> Restarting #{id} at #{Time.now} <--" |
|
108 | 110 |
stop! |
109 | 111 |
setup!(scheduler, mutex) |
110 | 112 |
run! |
@@ -157,16 +157,14 @@ module Agents |
||
157 | 157 |
def setup |
158 | 158 |
require 'twitter/json_stream' |
159 | 159 |
@filter_to_agent_map = @config[:filter_to_agent_map] |
160 |
- |
|
161 |
- schedule_in RELOAD_TIMEOUT do |
|
162 |
- puts "--> Restarting TwitterStream #{id} at #{Time.now} <--" |
|
163 |
- restart! |
|
164 |
- end |
|
165 | 160 |
end |
166 | 161 |
|
167 | 162 |
def run |
168 | 163 |
@recent_tweets = [] |
169 | 164 |
EventMachine.run do |
165 |
+ EventMachine.add_periodic_timer(RELOAD_TIMEOUT) do |
|
166 |
+ restart! |
|
167 |
+ end |
|
170 | 168 |
stream!(@filter_to_agent_map.keys, @agent) do |status| |
171 | 169 |
handle_status(status) |
172 | 170 |
end |
@@ -200,6 +198,9 @@ module Agents |
||
200 | 198 |
|
201 | 199 |
stream.on_error do |message| |
202 | 200 |
STDERR.puts " --> Twitter error: #{message} at #{Time.now} <--" |
201 |
+ STDERR.puts " --> Sleeping for 15 seconds" |
|
202 |
+ sleep 15 |
|
203 |
+ restart! |
|
203 | 204 |
end |
204 | 205 |
|
205 | 206 |
stream.on_no_data do |message| |